home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 12511500 / var1470.dms / var1470.adf / clouds / Clouds2.0.pas < prev    next >
Pascal/Delphi Source File  |  1993-01-24  |  23KB  |  481 lines

  1. PROGRAM Cloudy;
  2.  
  3. {************************************************
  4.  ************************************************
  5.  ****                                        ****
  6.  ****              Clouds 2.0                ****
  7.  ****                                        ****
  8.  ****         by Danny Amor in 1992          ****
  9.  ****                                        ****
  10.  ****         using KICK-PASCAL 2.1          ****
  11.  ****                                        ****
  12.  ************************************************
  13.  ************************************************}
  14.  
  15. USES IFF, Req;
  16.  
  17. {$INCL "libraries/dosextens.h"}
  18.  
  19. {$OPT q}
  20.  
  21. CONST ObereFarbe   = 31;
  22.       UntereFarbe  =  2;
  23.       MittlereFarbe= 17;
  24.  
  25. TYPE IDt0 = ARRAY[1..1280] OF INTEGER;
  26.      IDt1 = ARRAY[1..10]   OF INTEGER;
  27.  
  28. VAR Scr                                         : ^Screen;
  29.     Win,Win2                                    : ^Window;
  30.     Msg                                         : ^IntuiMessage;
  31.     Rp                                          : ^Rastport;
  32.     Vp, OldPtr, Con2                            : PTR;
  33.     FailName,Titl                               : STRING[256];
  34.     ab,na,num_iter,nk,n1,n,farbe,
  35.     farbe1,farbe2,farbe3,farbe4                 : WORD;
  36.     Ok,Ende                                     : BOOLEAN;
  37.     mu,mf                                       : REAL;
  38.     MyProcess                                   : ^Process;
  39.     cloudybDt0,cloudybDt1,cloudybDt4,cloudybDt5 : IDt1;
  40.     cloudytattr0                                : TextAttr;
  41.     cloudyitxt0 ,cloudyitxt1 ,cloudyitxt2,
  42.     cloudyitxt3 ,cloudyitxt4 ,cloudyitxt5,
  43.     cloudyitxt6 ,cloudyitxt7 ,cloudyitxt8,
  44.     cloudyitxt9 ,cloudyitxt10,cloudyitxt11,
  45.     cloudyitxt12                                : IntuiText;
  46.     cloudyimage0                                : Image;
  47.     cloudyiDT0                                  : ^IDt0;
  48.     cloudyborder0,cloudyborder1,cloudyborder4,
  49.     cloudyborder5                               : Border;
  50.     cloudygadget0,cloudygadget1,cloudygadget2,
  51.     cloudygadget3,cloudygadget4,cloudygadget5,
  52.     cloudygadget6,cloudygadget7,cloudygadget8,
  53.     cloudygadget9                               : Gadget;
  54.     clouds0                                     : Requester;
  55.     AktGad                                      : ^Gadget;
  56.     resz                                        : LONG;
  57.     resx,resy                                   : INTEGER;
  58.     a                                           : CHAR;
  59.  
  60. PROCEDURE ShowGadgets(w: p_Window);
  61.  
  62. VAR a: BOOLEAN;
  63.  
  64. BEGIN
  65.   cloudytattr0:=TextAttr("topaz.font",8,0,99);
  66.   cloudyitxt0:=IntuiText(25,0,0,16,3,^cloudytattr0,"QUIT",NIL);
  67.   cloudyitxt1:=IntuiText(25,27,0,16,3,^cloudytattr0,"SIZE",NIL);
  68.   cloudyitxt2:=IntuiText(25,27,0,4,3,^cloudytattr0,"4",NIL);
  69.   cloudyitxt3:=IntuiText(25,27,0,4,3,^cloudytattr0,"3",NIL);
  70.   cloudyitxt4:=IntuiText(25,27,0,4,3,^cloudytattr0,"2",NIL);
  71.   cloudyitxt5:=IntuiText(25,27,0,4,3,^cloudytattr0,"1",NIL);
  72.   cloudyitxt6:=IntuiText(1,0,0,8,3,^cloudytattr0,"",NIL);
  73.   cloudyitxt7:=IntuiText(25,27,0,4,3,^cloudytattr0,"ANIMATE",NIL);
  74.   cloudyitxt8:=IntuiText(25,0,0,8,3,^cloudytattr0,"SMOOTH",NIL);
  75.   cloudyitxt9:=IntuiText(25,0,0,16,3,^cloudytattr0,"SAVE",NIL);
  76.   cloudyitxt10:=IntuiText(1,0,2,8,6,^cloudytattr0,"CLOUDS",^cloudyitxt11);
  77.   cloudyitxt11:=IntuiText(1,0,2,3,85,^cloudytattr0,"1992 by",^cloudyitxt12);
  78.   cloudyitxt12:=IntuiText(1,0,2,4,97,^cloudytattr0,"D. Amor",NIL);
  79.   cloudyiDt0:=Ptr(Alloc_Mem(SizeOf(Idt0),2));
  80.   cloudyiDt0^:=IDt0(2687  ,-2245  ,-32230  ,678  ,24531  ,7313  ,-7301  ,-30724  ,-7678  ,-4221  ,-22346,
  81.   -31354  ,11313  ,-556  ,4003  ,-18938  ,-19131  ,-25035  ,-22925  ,30902  ,2927  ,-4646  ,-30028  ,-19184  ,-12944  ,2050  ,3598,
  82.   20466  ,-12812  ,15751  ,-19174  ,14297  ,-2610  ,19404  ,-32016  ,14996  ,-1812  ,-26046  ,-12023  ,6576  ,12971  ,29272  ,3409,
  83.   7608  ,12027  ,-7198  ,22644  ,23582  ,1393  ,-25024  ,-17419  ,30678  ,13605  ,-6788  ,-26675  ,27343  ,2834  ,-11157  ,5102,
  84.   8970  ,27401  ,-7106  ,1878  ,-20239  ,-26263  ,672  ,30311  ,-15117  ,4291  ,4172  ,-2365  ,-7774  ,27978  ,22021  ,-22205,
  85.   -8924  ,-25218  ,-19554  ,-26861  ,-7510  ,23694  ,20757  ,-6859  ,-2475  ,15612  ,-11939  ,31715  ,-1812  ,-26666  ,9834  ,-9604,
  86.   -5817  ,10344  ,6827  ,25815  ,-11646  ,-3984  ,4691  ,2311  ,29272  ,31052  ,-2474  ,29300  ,-3107  ,8741  ,5784  ,16902,
  87.   1169  ,18680  ,-24210  ,-24289  ,4828  ,-22833  ,12513  ,-15929  ,-29761  ,30037  ,8396  ,-23373  ,-29675  ,2505  ,-12890  ,-10640,
  88.   22329  ,-6424  ,2876  ,14032  ,-9871  ,-14106  ,9933  ,-13443  ,29063  ,-2508  ,-23827  ,132  ,-114  ,-16415  ,-7321  ,-10832,
  89.   -14086  ,26642  ,-2904  ,-20898  ,23977  ,-21334  ,-18124  ,-21412  ,9598  ,-25307  ,19724  ,6354  ,20872  ,-29128  ,6628  ,18035,
  90.   -25504  ,-15770  ,-28205  ,-9334  ,9053  ,29599  ,10538  ,28980  ,19058  ,-26776  ,-22075  ,21494  ,-28051  ,-25177  ,-24316  ,17846,
  91.   29994  ,-7372  ,32529  ,18034  ,-27890  ,30010  ,8352  ,22246  ,-27610  ,14481  ,7002  ,-8461  ,-12746  ,-26607  ,8283  ,27475,
  92.   24546  ,-4810  ,-15395  ,8118  ,-20525  ,27973  ,9839  ,12352  ,-20114  ,22983  ,13230  ,-25032  ,25966  ,-21361  ,-16827  ,-20897,
  93.   -12772  ,-31151  ,-22048  ,-18278  ,862  ,-21055  ,5354  ,-2715  ,-22226  ,-20486  ,-19607  ,-12677  ,6114  ,17134  ,7685  ,-5419,
  94.   5978  ,11670  ,10079  ,26525  ,31713  ,2328  ,-19773  ,31556  ,17899  ,-20536  ,10555  ,-30923  ,15508  ,18600  ,1605  ,6901,
  95.   -22849  ,5918  ,-25967  ,23860  ,-25371  ,-29992  ,30560  ,30297  ,23217  ,23102  ,23671  ,13593  ,28396  ,15564  ,17163  ,14508,
  96.   -5192  ,-11808  ,27733  ,-8902  ,20992  ,19711  ,29598  ,9940  ,-14977  ,27395  ,-11347  ,-15190  ,28219  ,11252  ,9989  ,-16741,
  97.   30651  ,-10362  ,-31260  ,-17657  ,9448  ,-14781  ,-158  ,23104  ,-2445  ,194  ,6489  ,1410  ,-28656  ,-7292  ,-8957  ,-12603,
  98.   -24211  ,-22333  ,-7078  ,25327  ,-32226  ,30624  ,32173  ,21843  ,14383  ,15617  ,16704  ,-7534  ,-15943  ,27116  ,26884  ,12659,
  99.   6463  ,296  ,-3373  ,4888  ,17405  ,-6090  ,-8969  ,9299  ,-2533  ,-7594  ,-4420  ,4678  ,-21695  ,-9559  ,21318  ,7428,
  100.   6414  ,-2426  ,-76  ,-23258  ,6830  ,15818  ,28596  ,-18122  ,-23917  ,-6292  ,18047  ,-9125  ,-5659  ,-26121  ,-19478  ,-25773,
  101.   -6363  ,22810  ,2794  ,-28455  ,26585  ,-1947  ,-16676  ,-14079  ,-16412  ,-21325  ,19361  ,28774  ,27438  ,-27214  ,-17723  ,13002,
  102.   362  ,-2313  ,7972  ,-6136  ,14707  ,5992  ,-16560  ,-18463  ,-27633  ,-6302  ,12965  ,-18610  ,15305  ,-13751  ,16440  ,17011,
  103.   -13905  ,-30332  ,32465  ,-29565  ,10645  ,-26163  ,-18288  ,-28462  ,-18595  ,-3462  ,16397  ,-2492  ,22081  ,-24085  ,13787  ,-29309,
  104.   4953  ,-5943  ,22179  ,2651  ,-8087  ,1015  ,26638  ,7674  ,-25390  ,17707  ,17385  ,-27674  ,-17549  ,-2256  ,23071  ,-10263,
  105.   2956  ,26627  ,12995  ,5948  ,9610  ,22105  ,-24114  ,-27244  ,20407  ,-5105  ,-4910  ,-4193  ,-12239  ,-2891  ,-4800  ,-5556,
  106.   10589  ,-639  ,-10540  ,-667  ,-20560  ,-27191  ,-30836  ,-12005  ,32146  ,-29807  ,-7581  ,-3201  ,-1145  ,-14862  ,17761  ,-19512,
  107.   -25470  ,1893  ,2591  ,-13769  ,-7726  ,-28800  ,-9955  ,-7107  ,-770  ,-2859  ,8525  ,-12285  ,21398  ,-30739  ,-1118  ,-5051,
  108.   29853  ,-10926  ,32164  ,18927  ,-1239  ,-24056  ,-31165  ,-10449  ,32319  ,-5805  ,28280  ,-5761  ,-21213  ,-12153  ,-9091  ,-19439,
  109.   -22134  ,26657  ,1850  ,-14147  ,15889  ,8841  ,-21698  ,11264  ,-8773  ,6602  ,-13443  ,30266  ,-21068  ,29324  ,-29156  ,-25459,
  110.   -2842  ,-3521  ,-8516  ,11263  ,13022  ,-30289  ,7988  ,-2284  ,-21534  ,-14947  ,-24517  ,16037  ,30620  ,310  ,-5336  ,-11883,
  111.   21871  ,-15211  ,-19404  ,-9462  ,25173  ,-24568  ,-10469  ,8664  ,1011  ,-25423  ,7968  ,2539  ,-25481  ,-7821  ,-427  ,-18586,
  112.   13179  ,-29370  ,32007  ,-27478  ,-24271  ,-1025  ,-7966  ,32551  ,32176  ,-1540  ,-7750  ,-14909  ,-18114  ,-5685  ,-9337  ,18661,
  113.   26767  ,3264  ,-26140  ,26740  ,30979  ,-6983  ,-32766  ,-4593  ,-7926  ,25658  ,-32223  ,-4922  ,-5143  ,-26887  ,19453  ,-32412,
  114.   -9874  ,23287  ,-6211  ,-32700  ,-401  ,2943  ,-909  ,-24562  ,20534  ,6385  ,-9951  ,636  ,16846  ,-23487  ,-1636  ,-14524,
  115.   8912  ,-5055  ,1407  ,-25393  ,-17902  ,-4897  ,6522  ,15379  ,-969  ,28164  ,11840  ,7200  ,-12187  ,26252  ,8853  ,5258,
  116.   14867  ,19980  ,1110  ,9867  ,-13026  ,-31378  ,12406  ,16363  ,-989  ,-25744  ,14783  ,7047  ,-2570  ,-19488  ,3094  ,22471,
  117.   -5830  ,-24022  ,8711  ,29719  ,-3026  ,-6001  ,24527  ,3302  ,25769  ,9375  ,-16790  ,-32303  ,-31817  ,6062  ,-11944  ,-13335,
  118.   -24693  ,16335  ,-100  ,4588  ,12698  ,8091  ,30528  ,16623  ,-2148  ,31647  ,-2512  ,2185  ,-3498  ,13431  ,23600  ,14860,
  119.   16052  ,-18445  ,31987  ,28708  ,1768  ,-18189  ,-18349  ,10475  ,-20368  ,-20379  ,16859  ,-31015  ,21528  ,8597  ,10213  ,31562,
  120.   21228  ,4249  ,2000  ,7634  ,-14344  ,12422  ,28287  ,-29570  ,3451  ,2128  ,-7169  ,-30655  ,20474  ,-30340  ,8412  ,-11156,
  121.   16185  ,7709  ,-5950  ,-2376  ,559  ,-19241  ,-25273  ,-40  ,-502  ,11391  ,-9917  ,6651  ,11780  ,12316  ,14535  ,-18023,
  122.   22336  ,30976  ,3031  ,1305  ,31681  ,-9469  ,-26243  ,3858  ,16133  ,-3325  ,-7266  ,4086  ,15624  ,9834  ,-14690  ,-28829,
  123.   9175  ,5354  ,3009  ,-13836  ,3882  ,-29073  ,6589  ,7616  ,-31973  ,-178  ,14798  ,15595  ,-16289  ,3929  ,-1245  ,11915,
  124.   -2537  ,-8504  ,25919  ,-8281  ,-13538  ,-11161  ,22716  ,32041  ,-11753  ,5429  ,-32577  ,30527  ,-24406  ,-32573  ,-15730  ,-24785,
  125.   -24107  ,-5899  ,15552  ,10337  ,350  ,-4357  ,-25549  ,-3074  ,-24828  ,-455  ,-25475  ,-1539  ,23615  ,-27867  ,4159  ,-690,
  126.   31611  ,29181  ,-1797  ,-9089  ,3715  ,20129  ,14268  ,5212  ,28379  ,16551  ,9532  ,6228  ,-53  ,-13940  ,11129  ,3716,
  127.   -1088  ,18411  ,-18225  ,9785  ,122  ,1781  ,-11314  ,7723  ,-29188  ,23217  ,20808  ,17928  ,5002  ,29943  ,-937  ,2274,
  128.   15382  ,28824  ,-1448  ,19161  ,-16335  ,2047  ,-254  ,7  ,-576  ,2047  ,-448  ,14851  ,-64  ,6143  ,-904  ,-2297,
  129.   -144  ,1023  ,32283  ,-2169  ,-4  ,-7170  ,32765  ,-3697  ,-4  ,25597  ,32767  ,-3322  ,-2  ,-3586  ,14335  ,-124,
  130.   -144  ,-1544  ,7167  ,-128  ,-400  ,-1808  ,1023  ,-128  ,30776  ,-1026  ,9983  ,-640  ,16880  ,-7170  ,1635  ,-1912,
  131.   992  ,-7170  ,0  ,-8192  ,992  ,-7200  ,6145  ,-16372  ,1984  ,-7688  ,11779  ,-8161  ,924  ,-16016  ,520  ,-6017,
  132.   -15365  ,-15888  ,1033  ,-10113  ,-3585  ,-32110  ,9  ,-16353  ,-1796  ,-32640  ,0  ,-8129  ,-1544  ,-32768  ,1  ,-8129,
  133.   -3792  ,-32758  ,8705  ,-5137  ,-2000  ,-8049  ,-61  ,-3073  ,-1998  ,9375  ,-25  ,-1  ,-968  ,6078  ,-57  ,-521,
  134.   -500  ,16383  ,-125  ,-13  ,-12772  ,8187  ,-2225  ,-16  ,2064  ,32767  ,-2545  ,-16  ,3160  ,15999  ,23567  ,-528,
  135.   184  ,16383  ,31948  ,-8  ,254  ,14591  ,-18228  ,-196  ,-20354  ,12415  ,16832  ,31038  ,21534  ,8703  ,10208  ,60,
  136.   21118  ,247  ,2032  ,44  ,-16258  ,249  ,28287  ,-32768  ,636  ,127  ,-7169  ,-32712  ,124  ,-32385  ,-7969  ,-11248,
  137.   62  ,31  ,-7997  ,-2496  ,44  ,-30465  ,-32313  ,31776  ,-452  ,4223  ,-15933  ,-2045  ,-450  ,2108  ,8647  ,-2047,
  138.   -130  ,256  ,983  ,-767  ,-2  ,8963  ,-32259  ,-237  ,-2  ,771  ,-7169  ,-9  ,-7  ,2018  ,-14337  ,32739,
  139.   -13  ,2016  ,3070  ,14327  ,-5  ,-28704  ,6594  ,1023  ,32740  ,-64  ,14768  ,1020  ,16352  ,-28735  ,-1060  ,4604,
  140.   2528  ,-8256  ,26048  ,8280  ,13543  ,-2080  ,192  ,214  ,11751  ,-272  ,192  ,192  ,24535  ,32576  ,240  ,24816,
  141.   24544  ,6130  ,-16129  ,-2050  ,-160  ,4600  ,24639  ,-1  ,32568  ,504  ,24701  ,-1  ,-968  ,3564  ,-8129  ,-49,
  142.   -3972  ,4092  ,255  ,-1  ,284  ,14240  ,-13377  ,-2084  ,4500  ,16256  ,-9921  ,-12  ,16  ,14209  ,-11399  ,-140,
  143.   112  ,15232  ,16639  ,-8  ,96  ,32258  ,9215  ,-8  ,4064  ,9806  ,-24193  ,-8  ,8176  ,3080  ,104  ,-226,
  144.   16352  ,3073  ,-32672  ,16135  ,-50  ,-1  ,-3  ,-8  ,512  ,-1  ,-1  ,-4  ,0  ,-1  ,-1  ,-8,
  145.   0  ,-1  ,-1  ,-8  ,0  ,8191  ,-1  ,-16  ,0  ,-24577  ,-1  ,-7  ,0  ,4095  ,-1  ,-5,
  146.   128  ,2047  ,-1  ,-1  ,384  ,2047  ,-1  ,-1  ,-30784  ,2047  ,-1  ,-1  ,-16896  ,8191  ,-1  ,-1,
  147.   -1024  ,8191  ,-1  ,-1  ,-1024  ,8191  ,-6145  ,-1  ,-2048  ,8191  ,-11777  ,-1  ,-1022  ,16383  ,-513  ,-1,
  148.   -1018  ,16383  ,-1025  ,-1  ,-512  ,32765  ,-1  ,-1  ,-256  ,32767  ,-1  ,-1  ,-512  ,32767  ,-1  ,-1,
  149.   -320  ,32757  ,-8705  ,-1  ,-64  ,8048  ,63  ,-1  ,-64  ,-9376  ,31  ,-1  ,-64  ,-6079  ,63  ,-1,
  150.   -16  ,-16384  ,127  ,-1  ,-32  ,-8188  ,2239  ,-1  ,-32  ,-32768  ,2559  ,-1  ,-96  ,-16000  ,-23553  ,-1,
  151.   -192  ,-16384  ,-31937  ,-1  ,-256  ,-14592  ,18239  ,-1  ,20352  ,-12416  ,-16833  ,-1  ,-21536  ,-8704  ,-10209  ,-1,
  152.   -21120  ,-256  ,-2033  ,-1  ,16256  ,-256  ,-28288  ,32767  ,-128  ,-128  ,7168  ,32767  ,-128  ,32384  ,7968  ,11263,
  153.   -64  ,-32  ,7996  ,2559  ,-48  ,32512  ,32312  ,1023  ,448  ,-128  ,15932  ,2044  ,448  ,-61  ,-8648  ,2046,
  154.   128  ,-257  ,-984  ,766  ,0  ,-772  ,32258  ,236  ,0  ,-772  ,7168  ,8  ,6  ,-2019  ,14336  ,28,
  155.   14  ,-2017  ,-3072  ,8  ,4  ,28703  ,-6656  ,0  ,0  ,63  ,-14848  ,0  ,0  ,28734  ,1024  ,0,
  156.   0  ,8255  ,-26112  ,0  ,0  ,2079  ,-256  ,0  ,2  ,15  ,-256  ,0  ,0  ,63  ,-256  ,0,
  157.   0  ,15  ,-256  ,0  ,128  ,7  ,-64  ,0  ,192  ,7  ,-126  ,0  ,960  ,19  ,-64  ,48,
  158.   3968  ,3  ,-256  ,0  ,-32  ,95  ,-960  ,2083  ,-32  ,127  ,-320  ,11  ,-32  ,127  ,-890  ,11,
  159.   -128  ,127  ,-256  ,7  ,-128  ,511  ,-1024  ,7  ,-4096  ,511  ,-384  ,7  ,-8192  ,1023  ,-128  ,1,
  160.   -16384  ,1023  ,-128  ,0  ,0  );
  161.   cloudyimage0:=Image(0, 0, 64, 64, 5,cloudyiDt0, 31, 0,NIL);
  162.   cloudybDt0:=IDt1(1,1,1,12,0,13,0,0,62,0);
  163.   cloudyborder0:=Border(0, 0, 26, 0, 0, 5,^cloudybDt0,^cloudyborder1);
  164.   cloudybDt1:=IDt1(62,13,62,1,63,0,63,13,1,13);
  165.   cloudyborder1:=Border(0, 0, 1, 0, 0, 5,^cloudybDt1,NIL);
  166.   cloudybDt4:=IDt1(1,1,1,12,0,13,0,0,14,0);
  167.   cloudyborder4:=Border(0, 0, 26, 0, 0, 5,^cloudybDt4,^cloudyborder5);
  168.   cloudybDt5:=IDt1(14,13,14,1,15,0,15,13,1,13);
  169.   cloudyborder5:=Border(0, 0, 1, 0, 0, 5,^cloudybDt5,NIL);
  170.   cloudygadget0:=Gadget(^cloudygadget1, 0, 185, 64, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder0, NIL, ^cloudyitxt0,0, NIL, 0, PTR(-1));
  171.   cloudygadget1:=Gadget(^cloudygadget2, 0, 108, 64, 14, GADGHNONE, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder0, NIL, ^cloudyitxt1,0, NIL, 1, PTR(-1));
  172.   cloudygadget2:=Gadget(^cloudygadget3, 48, 122, 16, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder4, NIL, ^cloudyitxt2,0, NIL, 2, PTR(-1));
  173.   cloudygadget3:=Gadget(^cloudygadget4, 32, 122, 16, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder4, NIL, ^cloudyitxt3,0, NIL, 3, PTR(-1));
  174.   cloudygadget4:=Gadget(^cloudygadget5, 16, 122, 16, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder4, NIL, ^cloudyitxt4,0, NIL, 4, PTR(-1));
  175.   cloudygadget5:=Gadget(^cloudygadget6, 0, 122, 16, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder4, NIL, ^cloudyitxt5,0, NIL, 5, PTR(-1));
  176.   cloudygadget6:=Gadget(^cloudygadget7, 0, 17, 64, 64, GADGHNONE+GADGIMAGE, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyimage0, NIL, ^cloudyitxt6,0, NIL, 6, PTR(-1));
  177.   cloudygadget7:=Gadget(^cloudygadget8, 0, 140, 64, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder0, NIL, ^cloudyitxt7,0, NIL, 7, PTR(-1));
  178.   cloudygadget8:=Gadget(^cloudygadget9, 0, 155, 64, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder0, NIL, ^cloudyitxt8,0, NIL, 8, PTR(-1));
  179.   cloudygadget9:=Gadget(NIL, 0, 170, 64, 14, GADGHCOMP, RELVERIFY+GADGIMMEDIATE, BOOLGADGET+REQGADGET, ^cloudyborder0, NIL, ^cloudyitxt9,0, NIL, 9, PTR(-1));
  180.   InitRequester( ^clouds0);
  181.   clouds0.LeftEdge := resx-64;
  182.   clouds0.TopEdge := 0;
  183.   clouds0.Width := 64;
  184.   clouds0.Height := 200;
  185.   clouds0.ReqGadget := ^cloudygadget0;
  186.   clouds0.ReqBorder := NIL;
  187.   clouds0.ReqText := ^cloudyitxt10;
  188.   clouds0.Flags := 0;
  189.   clouds0.BackFill := 0;
  190.   a:=Request(^clouds0,w);
  191. END;
  192.  
  193. PROCEDURE TestF(VAR farbe: WORD);
  194.  
  195. BEGIN
  196.   IF farbe>ObereFarbe THEN farbe:=ObereFarbe;
  197.   IF farbe<UntereFarbe THEN farbe:=UntereFarbe
  198. END;
  199.  
  200. PROCEDURE RandomFarbe(VAR Rp: p_RastPort; Start: WORD; VAR mf: REAL;
  201.                       x,y: INTEGER);
  202.  
  203. VAR farbe,a: WORD;
  204.  
  205. BEGIN
  206.   farbe:=Start+SUCC(ROUND(RANDOM*mf*2-mf));
  207.   TestF(farbe);
  208.   SetAPen(Rp,farbe);
  209.   a:=WritePixel(Rp,x,y);
  210. END;
  211.  
  212. PROCEDURE Cloud;
  213.  
  214. TYPE Coord = ARRAY [1..10] OF WORD;
  215.  
  216. VAR i,j,k,l,smul1,smul2,x1,y1,x2,y2,x3,y3: WORD;
  217.     xy                                   : Coord;
  218.  
  219.   PROCEDURE BigPic(n,i: WORD; VAR n1,l: WORD);
  220.  
  221.   BEGIN
  222.    n1:=n SHR 1;
  223.    IF n1=127 THEN INC(n1);
  224.    l:=1 SHL i;
  225.    IF l=0 THEN DEC(l);
  226.   END;
  227.  
  228.   PROCEDURE SetEdge(VAR Rp: p_RastPort; x1,y1,x2,y2,x3,y3: WORD;
  229.                     VAR mf: REAL);
  230.  
  231.   BEGIN
  232.     farbe1:=ReadPixel(Rp,x1,y1);
  233.     farbe2:=ReadPixel(Rp,x2,y2);
  234.     RandomFarbe(Rp,(farbe1+farbe2) SHR 1,mf,x3,y3);
  235.   END;
  236.  
  237.   PROCEDURE SetPoint(VAR Rp: p_RastPort; VAR mf: REAL;
  238.                      VAR xy: Coord);
  239.  
  240.   VAR a: INTEGER;
  241.  
  242.   BEGIN
  243.     farbe1:=ReadPixel(Rp,xy[1],xy[2]);
  244.     farbe2:=ReadPixel(Rp,xy[3],xy[4]);
  245.     farbe3:=ReadPixel(Rp,xy[5],xy[6]);
  246.     farbe4:=ReadPixel(Rp,xy[7],xy[8]);
  247.     farbe:=(farbe1+farbe2+farbe3+farbe4) SHR 2+ROUND(RANDOM*2*mf-mf);
  248.     TestF(farbe);
  249.     SetAPen(Rp,farbe);
  250.     a:=WritePixel(Rp,xy[9],xy[10]);
  251.   END;
  252.  
  253. BEGIN
  254.   SetAPen(Rp,0);
  255.   RectFill(Rp,0,0,256,256);
  256.   RANDOMIZE;
  257.   mf:=SUCC(num_iter)*mu;
  258.   RandomFarbe(Rp,MittlereFarbe,mf,0,  0);
  259.   RandomFarbe(Rp,MittlereFarbe,mf,0, na);
  260.   RandomFarbe(Rp,MittlereFarbe,mf,na, 0);
  261.   RandomFarbe(Rp,MittlereFarbe,mf,na,na);
  262.   n:=na;
  263.   FOR i:=0 TO num_iter DO
  264.   BEGIN
  265.     mf:=SUCC(num_iter-i)*mu;
  266.     Bigpic(n,i,n1,l);
  267.     FOR j:=1 TO l DO
  268.     BEGIN
  269.       smul1:=PRED(j)*n;
  270.       smul2:=j*n;
  271.       SetEdge(Rp,smul1,0    ,smul2,0    ,smul2-n1,0       ,mf);
  272.       SetEdge(Rp,smul1,na   ,smul2,na   ,smul2-n1,na      ,mf);
  273.       SetEdge(Rp,0    ,smul1,0    ,smul2,0       ,smul2-n1,mf);
  274.       SetEdge(Rp,na   ,smul1,na   ,smul2,na      ,smul2-n1,mf);
  275.     END;
  276.   n:=n1;
  277.   END;
  278.   n:=na;
  279.   FOR i:=0 TO num_iter DO
  280.   BEGIN
  281.     mf:=SUCC(num_iter-i)*mu;
  282.     BigPic(n,i,n1,l);
  283.     FOR k:=1 TO l DO
  284.       FOR j:=1 TO l DO
  285.       BEGIN
  286.         smul1:=k*n;   smul2:=j*n;
  287.         xy:=Coord(smul2-n,smul1-n,smul2-n,smul1,smul2,smul1-n,
  288.                   smul2,smul1,smul2-n1,smul1-n1);
  289.         SetPoint(Rp,mf,xy);
  290.       END;
  291.     nk:=0;
  292.     FOR k:=1 TO PRED(1 SHL SUCC(i)) DO
  293.     BEGIN
  294.       nk:=1-nk;
  295.       FOR j:=1 TO (1 SHL i)-nk DO
  296.       BEGIN
  297.         smul1:=j*n+nk*n1;   smul2:=k*n1;
  298.         xy:=Coord(smul1-n1,smul2-n1,smul1,smul2,smul1-n1,smul2+n1,
  299.                   smul1-n,smul2,smul1-n1,smul2);
  300.         SetPoint(Rp,mf,xy);
  301.       END;
  302.     END;
  303.     n:=n1;
  304.   END;
  305. END;
  306.  
  307. PROCEDURE SizeOut(VAR na,num_iter: WORD; VAR mu: REAL; faktor: WORD);
  308.  
  309. BEGIN
  310.   faktor:=7-faktor;
  311.   IF resz=0 THEN
  312.   BEGIN
  313.     na:=8 SHL faktor;
  314.     num_iter:=2+faktor;
  315.   END
  316.   ELSE
  317.   BEGIN
  318.     na:=16 SHL faktor;
  319.     num_iter:=3+faktor;
  320.   END;
  321.   mu:=2.5-faktor/5;
  322.   Cloud;
  323. END;
  324.  
  325. PROCEDURE Smooth(VAR na: WORD);
  326.  
  327. VAR y,x,a: WORD;
  328.  
  329. BEGIN
  330.   FOR y:=0 TO PRED(na) DO
  331.     FOR x:=0 TO PRED(na) DO
  332.     BEGIN
  333.       farbe1:=ReadPixel(Rp,x,y);
  334.       farbe2:=ReadPixel(Rp,SUCC(x),y);
  335.       farbe3:=ReadPixel(Rp,x,SUCC(y));
  336.       farbe4:=ReadPixel(Rp,SUCC(x),SUCC(y));
  337.       farbe :=(farbe1+farbe2+farbe3+farbe4) SHR 2;
  338.       SetAPen(Rp,farbe);
  339.       a:=WritePixel(Rp,x,y);
  340.     END;
  341. END;
  342.  
  343. PROCEDURE anim(vp: PTR);;
  344.  
  345. VAR a,i,k,nh,n: WORD;
  346.     nf: SHORT;
  347.  
  348. BEGIN
  349.   nh:=0;  nf:=1;  n:=2;
  350.   FOR k:=1 TO 22 DO
  351.   BEGIN
  352.     FOR i:=1 TO 11-nh DO
  353.     BEGIN
  354.       SetRGB4(Vp,n,0,0,15);
  355.       INC(n);
  356.     END;
  357.     FOR i:=2 TO 14 DO
  358.     BEGIN
  359.       SetRGB4(Vp,n,i,i,15);
  360.       INC(n);
  361.     END;
  362.     SetRGB4(Vp,n,15,15,15);
  363.     INC(n);
  364.     FOR i:=14 DOWNTO 10 DO
  365.     BEGIN
  366.       SetRGB4(Vp,n,i,i,SUCC(i));
  367.       INC(n);
  368.     END;
  369.     FOR i:=1 TO nh DO
  370.     BEGIN
  371.       a:=1;
  372.       IF i>2 THEN a:=5-i;
  373.       IF i>7 THEN a:=i-10;
  374.       a:=(10-a);
  375.       SetRGB4(Vp,n,a,a,SUCC(a));
  376.       INC(n);
  377.     END;
  378.     nh:=nh+nf;
  379.     IF (nh=0) OR (nh=11) THEN nf:=-nf;
  380.     n:=2;
  381.   END;
  382. END;
  383.  
  384. FUNCTION AgaRequest(a0: STR80; a1: STRING): BOOLEAN;
  385.  
  386. VAR textRPtr         : ^TRStructure;
  387.     Ans              : WORD;
  388.     negText, posText : STRING[20];
  389.  
  390. BEGIN
  391.    negText:='Lores';
  392.    posText:='Hires';
  393.    NEW(textRPtr);
  394.    textRPTR^:=TRStructure(^a0,NIL,NIL,NIL,^posText,^negText,^a1,15,1,0,0,0,0,0);
  395.    Ans:=TextRequest(textRPtr);
  396.    DISPOSE(textRPtr);
  397.    IF Ans=1 THEN AgaRequest:=TRUE
  398.             ELSE AgaRequest:=FALSE;
  399. END;
  400.  
  401. PROCEDURE ReqHelpHelpHelp;
  402.  
  403. BEGIN
  404.   MyProcess^.pr_WindowPTR:=OldPtr;
  405. END;
  406.  
  407. BEGIN
  408.   Win2:=Open_Window(0,0,310,100,0,0,ACTIVATE,'CLOUDS v2.0',NIL,0,0,0,0);
  409.   Con2:=OpenConsole(Win2);
  410.   SetStdIO(Con2);
  411.   WRITELN('Welcome to CLOUDS v2.0!!! '+CHR(10)+
  412.                 'This program is pure Public Domain '+CHR(10)+
  413.                 'I hope you like it!!'+CHR(10)+
  414.                 'Have you got an AGA-AMIGA?'+CHR(10)+
  415.                 'If yes, you may use the hires-screen!'+CHR(10)+
  416.                 'ATTENTION: Hires works only on AGA-'+CHR(10)+
  417.                 'AMIGAS (i.e. A 4000 & A 1200)'+CHR(10));
  418.   WRITELN('Please enter (y)es or (n)o!');
  419.   READLN(a);
  420.   IF UPCASE(a)='Y' THEN
  421.   BEGIN
  422.     resx:=640;
  423.     resy:=512;
  424.     resz:=HIRES OR INTERLACE;
  425.   END
  426.   ELSE
  427.   BEGIN
  428.     resx:=320;
  429.     resy:=256;
  430.     resz:=0;
  431.   END;
  432.   SetStdIO(NIL);
  433.   CloseConsole(Con2);
  434.   Close_Window(Win2);
  435.   Scr:=Open_Screen(0,0,resx,resy,5,0,1,resz,NIL);
  436.   Win:=Open_Window(0,0,resx,resy,0,GADGETUP OR GADGETDOWN,
  437.                    BORDERLESS OR ACTIVATE,NIL,Scr,0,0,0,0);
  438.   Vp:=^Scr^.ViewPort;
  439.   Rp:=Win^.RPort;
  440.   MyProcess:=PTR(FindTask(NIL));
  441.   OldPtr:=MyProcess^.pr_WindowPTR;
  442.   MyProcess^.pr_WindowPTR:=Win;
  443.   AddExitServer(ReqHelpHelpHelp);
  444.   SetRGB4(Vp,0, 0, 0, 0);
  445.   SetRGB4(Vp,1,10,10,10);
  446.   Anim(vp);;
  447.   ShowGadgets(Win);
  448.   Ende:=FALSE;
  449.   REPEAT
  450.     Msg:=Wait_Port(Win^.UserPort);
  451.     Msg:=Get_Msg(Win^.UserPort);
  452.     CASE Msg^.Class OF
  453.       GADGETDOWN:
  454.       BEGIN
  455.         AktGad:=Msg^.IAddress;
  456.         CASE AktGad^.GadgetID OF
  457.           0   : IF DoubleRequest('Are you sure?','Request') THEN Ende:=TRUE;
  458.           2..5: SizeOut(na,num_iter,mu,ROUND(AktGad^.GadgetID));
  459.           7   : Anim(vp);
  460.           8   : Smooth(na);
  461.           9   : BEGIN
  462.                   na:=na SHL 1;
  463.                   IF (na MOD 8)<>0 THEN ab:=SUCC(na DIV 8)
  464.                                    ELSE ab:=na DIV 8;
  465.                   FailName:='';
  466.                   TiTl:='Save';
  467.                   OK:=GetString(^FailName,^TiTl,NIL,10,32);
  468.                   IF FailName<>'' THEN
  469.                     SaveBrush(Win,FailName,0,0,ab,na);
  470.                 END;
  471.           OTHERWISE BEGIN END;
  472.         END;
  473.       END;
  474.       OTHERWISE BEGIN END;
  475.     END;
  476.     Reply_Msg(Msg);
  477.   UNTIL Ende;
  478.   MyProcess^.pr_WindowPTR:=OldPtr;
  479. END.
  480.  
  481.